渲染器(Renderer)
提供路径/图像绘制、裁剪和变换应用等渲染能力。
方法(Methods)
drawPath
function draw(self: Rectangle, renderer: Renderer)
renderer:drawPath(self.path, self.paint)
end
drawImage
使用 ImageSampler、BlendMode 与透明度绘制 Image。
type DrawImage = {
myImage: Image?,
sampler: ImageSampler?,
}
function init(self: DrawImage, context: Context): boolean
self.myImage = context:image('myImage')
self.sampler = ImageSampler('clamp', 'clamp', 'bilinear')
return true
end
function draw(self: DrawImage, renderer: Renderer)
if self.myImage and self.sampler then
renderer:drawImage(self.myImage, self.sampler, 'srcOver', 1)
end
end
return function(): Node<DrawImage>
return {
myImage = nil,
sampler = nil,
init = init,
draw = draw,
}
end
drawImageMesh
基于网格数据(顶点、纹理坐标、三角索引)绘制图像。
clipPath
将后续绘制裁剪到给定 Path 区域内。
裁剪在下一次 restore 前持续生效。
save
保存当前渲染状态(变换、裁剪等)。
function draw(self: MyGame, renderer: Renderer)
-- draw each enemy
for _, enemy in self.enemies do
renderer:save()
enemy.artboard:draw(renderer)
renderer:restore()
end
end
restore
恢复最近一次 save 的渲染状态。
function draw(self: MyGame, renderer: Renderer)
-- draw each enemy
for _, enemy in self.enemies do
renderer:save()
enemy.artboard:draw(renderer)
renderer:restore()
end
end
transform
对当前渲染状态应用变换,直到 restore 前会累计生效。
function draw(self: SkewImage, renderer: Renderer)
if self.myImage and self.sampler then
local m = Mat2D.withScale(2, 3)
m.xx = 5
renderer:save()
renderer:transform(m)
renderer:drawImage(self.myImage, self.sampler, 'srcOver', 1)
renderer:restore()
end
end